package com.neu.stringbuffer;
	/**
	 * 
	 * @author neustu
	 *       stringbuffer 的使用方法
	 */
public class Demo02 {
	public static StringBuffer sb = new StringBuffer();
/**
 *  通过方法完成对字符串缓冲区的添加操作
 *  缓冲区:它的底层默认情况下会创建了一个 16个 空间的 byte 数组 (jdk9之后)
 */
	public static void add() {
//		  append方法: 是字符串缓存区的添加方法,可以添加任意类型的数据
//		  因为 append 参数可以是 objeck 类型,称为 java 大对象类型       (是所以java类的根)
		sb.append("abc");
		sb.append(":");
		sb.append("你好");
		sb.append(true);
		sb.append('行');
		sb.append(123);
//		Student student = new Student("stu_001","赵四","110");
		sb.append(new Student("stu_001","赵四","110"));
		sb.append(new Student("stu_002","赵三","119"));
		System.out.println("缓冲区中储存的内容:"+sb.toString());
		System.out.println("根据下标返回数据:"+sb.charAt(0));
		//  根据字符 找下标
		System.out.println(sb.indexOf(":"));
		
		/**
		 *  insert方法: 根据指定的位置插入数据
		 *  	注意事项: 当开发者使用该方法操作下标时,一定要保障该下标前面具备数据才可以
		 */
		sb.insert(4, "哈哈哈");  
		System.out.println("显示为:"+sb.toString());
		
	}
	/**
	 * 
	 * @param args
	 *  删除操作
	 */
	public static void deleteWithStringBuffer() {
		/*
		 *  deleteCharAt 方法:根据指定的下标完成删除
		 *  sb.deleteCharAt
		 */
		sb.deleteCharAt(4);
		System.out.println("删除后的字符池:"+sb.toString());
		/*
		 * delete 方法:根据指定的起始和结束位置进行删除
		 * 		注意:  不包括末尾下标
		 */
		sb.delete(0, 4);
		System.out.println(sb.toString());
	}
	
	/**
	 * 
	 * @param args
	 *  修改操作
	 */
	public static void updateValue() {
		/*
		 * setCharAt方法： 修改指定位置上的字符
		 */
		sb.setCharAt(0, 'n');
		System.out.println(sb.toString());
		/*
		 * reverse方法：用来完成池中数据的反转   把整个内容都反过来
		 */
		sb.reverse();
		System.out.println("反转后的池中数据:"+sb.toString());
	}
	
	/**
	 * 
	 * @param args
	 *  查询操作 
	 */
	public static void find() {
		StringBuilder sb1=new StringBuilder("neuedu");
		//获取缓冲区的容积（大小）
		System.out.println("容积： "+sb1.capacity());
		//获取长度
		System.out.println("长度  ："+sb1.length());
		//获取指定下标的字符
		System.out.println("下标对应的字符   ："+sb1.charAt(0));
		//显示缓冲区中所有的内容
		System.out.println("显示   ："+sb1.toString());
		System.out.println("  ： "+sb1);
	}
	public static void main(String[] args) {
		add();
		deleteWithStringBuffer();
		updateValue();
		find();
	}
}
